Modern computing devices typically have multiple and differing types of internal memory components, which are required to support different end applications. These memory components and their associated characteristics are some of the crucial metrics by which a computing device's performance can be measured. Modern computing devices are usually further capable of functioning with add-on memory components through various built in communications channels, such as a PCI bus, a Firewire port, a USB port, or a specialized Multi-Media Card (MMC) port. All of these internal and add-on memory components consist of either volatile or non-volatile memory, or some combination thereof. Nand Flash and Nor Flash are common types of non-volatile memory. Dynamic Random Access Memory (DRAM) and Static Random Access Memory (SRAM) are types of volatile memory. Memory type may be classified based on performance and density. High performance memories such as SRAM are larger, more costly to implement, and dissipate more power. Higher density memories, such as DRAM, are more cost effective, but typically have worse performance measured by access time for single elements and by the bandwidth, or rate of transfer of the memory contents to the processing elements which require the data or instructions contained in the memory system.
These associated tradeoffs are especially critical when these modern memory systems are implemented in mobile devices, such as Laptop PCs, cellular phones, PDAs, or any other variety of ultra-portable personal computing devices. In such devices, the additional considerations of power consumption and form factor make it critical that the memory resources be optimally configured and utilized. Fortunately, increasing levels of computer product integration have made it possible to package multiple memory types into a single complete memory system package, with features that significantly improve memory data-transfer and associated processing speeds.
One particular application where such integrated packaging is useful is in cache memory systems. Most modern computing systems have integrated caching systems comprising both a Level 1 and a Level 2 SRAM cache. Typically, a processor uses the cache to reduce the average time to access similar data from memory. The SRAM cache is a low-capacity, fast memory type, which stores copies of frequently accessed data from main memory locations.
When a processor attemps to read or write from or to a main memory location, it first checks the cache memory location to see if a previously stored copy of similar data is available. The processor does this by comparing the data address memory location with the cache to see if there is a cache hit (data exists in cache). If the processor does not find the data in cache, a cache miss occurs and the processor must run at a much slower data retrieval rate as it is required to access data from a slower main-memory location, such as a hard-disc or Flash memory. It would be advantageous to increase the cache hit in some way as to reduce the need for accessing the slowest memory type to find frequently accessed data.
Further still, most modern add-on cache memory systems include Flash memory and RAM memory wherein the Flash control occurs off-circuit at the external computing device's processor. This type of system is inefficient, because transfer between the Flash and RAM memory must be facilitated by routing data from the add-on memory system's Flash, across an external processor bus to the external computing device processor, and back across the external processor bus to the add-on memory system's RAM.